home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Prog / M / MacOberon241.cpt / MacOberon 2.4(1) / MacOberon2.4.Text (.txt) < prev    next >
Oberon Text  |  1992-02-07  |  13KB  |  112 lines

  1. Syntax10.Scn.Fnt
  2. ParcElems
  3. Alloc
  4. Syntax14b.Scn.Fnt
  5. Syntax12.Scn.Fnt
  6. Syntax12i.Scn.Fnt
  7. Changes in MacOberon Version 2.4
  8. Minor miscellaneous cleanups and bug fixes. The sources used for compiling this version of MacOberon are identical to the ones that will be published in the upcoming book by N. Wirth, "Project Oberon", to appear in autumn 1992 with Addison Wesley.
  9. Changes in MacOberon Version 2.3
  10. Loader
  11. Explicitly synchronizes caches when executing on a Motorola 68040 processor. Also, the user stack is now expanded far beyond the usual size on the Macintosh, allowing for heavily recursive functions.
  12. Kernel
  13. The Command_Shift_Period command preemption mechanism has been simplified and improved. Users can now abort almost any command, and this is safe. Normal operation can resume after the keyboard break.
  14. Display1 and GraphicOps
  15. The secondary bitmap is now supported for all operations. GraphicOps is similar to Display1, but implements clipping.
  16. Clipboard
  17. The default font is now used if style information provided by the Scrap Manager is inconstistent (fixes a bug in System 7.0).
  18. Compiler
  19. Importing multi_dimensional open array parameters now works correctly. The ENTIER function now rounds to minus infinity, as described in the language report.
  20. Texts
  21. Output of LONGREAL numbers corrected.
  22. Printer
  23. Variables PageHeight and PageWidth now exported.
  24. Origin of document is now upper left corner, as in TextFrames. Resizing a window displays a more intuitive behaviour. Delete Key works for selected objects.
  25. System
  26. Improved System.State ^ and System.ShowCommands ^ allows users to operate directly on the output of System.ShowModules (you can try it here).
  27. Miscellaneous Bug Fixes
  28. In modules Backup and Edit. Compilation with NIL checks enabled guards against programming errors when employing system services.
  29. New Features in MacOberon Version 2.2
  30. Application Parameters
  31. MacOberon now offers a standard mechanism for extracting parameters from resource files. Module Macintosh contains a procedure
  32.     GetPar(parName: ARRAY OF CHAR; VAR thePar: ARRAY OF CHAR)
  33. that will try to locate a named resource of type ".ObP" with the given name and return its contents up to the first null character in the variable parameter "thePar". By convention, parameter names should carry the name of the client module as a prefix. For example, the name of the default font is requested in module "Fonts" and stored in a resource named "Fonts.DefaultFontName".
  34. Fully Configurable Menus
  35. Using ResEdit, any command may now be put into the menu bar of the MacOberon application. Calling a command from the menu bar is very similar to calling it from an Oberon text, except that the value of "Oberon.Par" is not changed prior to command activation.
  36.     If Oberon fails to find a valid command in a selected menu item, it will attempt to open a driver using the string found in the menu. As a consequence, the names of desk accessories (or other apple menu folder items) can now be placed in any of MacOberon's menus.
  37.     The Oberon main loop no longer knows what items reside where in which menu. As a consequence, menu commands for desk accessories can no longer be supported under the regular Finder. Desk accessories run as usual under MultiFinder.
  38. Extended Font Support
  39. MacOberon now supports arbitrary font sizes and styles. The usual Oberon font naming conventions are used to refer to fonts that are stored in the System file (and not within the MacOberon application). For example, in order to convert the most recent selection into a bold typeface of the Helvetica font in a size of 143 points, one would use the command
  40.     Edit.ChangeFont Helvetica143b.Scn.Fnt
  41. In order to aid users that wish to use one of the standard Macintosh fonts instead of the "Syntax" font supplied with Oberon, MacOberon now allows users to define an alias name for "Syntax". If the application parameter "Macintosh.SyntaxFontName" is changed to a value other than "Syntax", MacOberon will automatically supply that other font whenever "Syntax" is requested. This applies to all font sizes and styles.
  42.     The name of the default font is extracted from the application parameter "Fonts.DefaultFontName". This may also be changed to any font present in the system. However, users have to be aware of the fact that the default font only applies to text newly being generated. Documents stored on a file will continue to appear in the font that was used in their creation. The appearance of existing documents may be changed by defining an alias name for "Syntax".
  43.     Changing the default font is useful mainly for choosing another font size. The screen metrics of the whole Oberon system, including the height of viewers, the spacing of lines in standard text frames and the width of scroll bars will scale automatically to reflect the height of the new default font.
  44. Full Support of the Clipboard
  45. MacOberon now supports styled text information in the Macintosh clipboard. The commands Clipboard.Cut , Clipboard.Copy and Clipboard.Paste work in the usual manner. The clipboard can be displayed by executing the command Clipboard.Show .
  46.     Note that module Clipboard is only loaded when the user executes one of its commands for the first time. It is not linked to the MacOberon Core. The routines that convert between the external and internal representations of the clipboard are only installed when this module is loaded. Application switching under MultiFinder is therefore a little quicker up to the point when the clipboard is first used within MacOberon.
  47. Toolbox Programming Interface
  48. Access of the Macintosh Toolbox is greatly simplified in version 2.2 of MacOberon. In version 2.2, the compiler no longer uses optimal alignments of data, but generates code that conforms to the conventions of the Macintosh Toolbox. There is a small performance penalty for this, but the compiler is much simpler and much easier to use. MacOberon no longer requires special flags for data types that are passed to the Toolbox, with the one exception of pointer types that are allocated by the Toolbox and not by Oberon. These have to be marked with a minus sign in source programs and are then ignored by the Oberon garbage collector. For example:
  49.     TYPE UntracedPtr=POINTER- TO ToolBoxRec;
  50. The standard function NEW may not applied to these pointer types. Instead, the Toolbox functions NewPtr (NewHandle) and DisposPtr (DisposHandle) have to be called explicitly.
  51.     A sample Macintosh application programmed in Oberon is provided. For details, please
  52.     Write.SysOpen ToolBox.Tool
  53. New Oberon Compiler
  54. Version 2.2 of Oberon features a new Oberon compiler that was written from scratch. It is much faster than the original one (which really wasn't slow at all) and at least as reliable. Expect some further updates of this compiler in the future that will produce greatly improved object code, by the use of optimization techniques such as common subexpression elimination, register variables and so on. A prototype optimizing compiler is already running at ETH, but has not been fully debugged and has therefore been declared unfit for release.
  55. Unified Text Model
  56. The extensible objects "Elements" previously supported by module "WriteTexts" have been moved downwards to module "Texts". Module "WriteTexts" no longer exists.
  57.     No changes are necessary in clients of Texts, they can be brought to the new version of Oberon by mere recompilation. The new text interface and specification is fully contained in the old one. Especially, clients assuming that a text normally has a valid ASCII projection are not broken.
  58.     In the new Text interface, a text is a sequence of objects with attributes (font, color, offset), where an object is either an ordinary character or an extensible object (called "Element"). 
  59. The important new parts of the interface are:
  60.     TYPE
  61.         Elem = POINTER TO ElemDesc;
  62.         ElemMsg = RECORD END;
  63.         Handler = PROCEDURE (e: Elem; VAR msg: ElemMsg);
  64.         ElemDesc = RECORD
  65.             W, H: LONGINT;
  66.             handle: Handler
  67.         END;
  68.         FileMsg = RECORD (ElemMsg)
  69.             id: INTEGER;
  70.             pos: LONGINT;
  71.             r: Files.Rider
  72.         END;
  73.         CopyMsg = RECORD (ElemMsg)
  74.             e: Elem
  75.         END;
  76.         IdentifyMsg = RECORD (ElemMsg)
  77.             mod, proc: ARRAY 32 OF CHAR
  78.         END;
  79.         Reader = RECORD (Files.Rider)
  80.             eot: BOOLEAN;
  81.             fnt: Fonts.Font;
  82.             col, voff: SHORTINT;
  83.             elem: Elem
  84.         END;
  85.         new: Elem;
  86.     PROCEDURE CopyElem (SE, DE: Elem);
  87.     PROCEDURE ElemBase (E: Elem): Text;
  88.     PROCEDURE ReadElem (VAR R: Reader);
  89.     PROCEDURE ReadPrevElem (VAR R: Reader);
  90.     PROCEDURE WriteElem (VAR W: Writer; e: Elem);
  91. Note that module Display is not imported by the interface, and that display or printing related messages are not defined on the level of the model. Since the notion of elements in a text is tightly coupled to a frame interpreting such elements in a useful way, such messages have been moved up to the view level (where they should belong).
  92. Element implementing modules do not register with Texts: When receiving an identify message, an element returns the module and procedure string identifying an allocation procedure; these strings are dictionary coded and written to the file. This is used at load time (via Modules) to invoke the allocation procedure which has to allocate an element, install a handler, and assign that element to the global variable Texts.new. If this worked, a load message is sent to the newly created object; otherwise the box information is used (and the remaining element block skipped) to create an alien element. Likewise, a store message is used to ask an element to write its private data.
  93. Procedure CopyElem copies all fields defined in the base type Elem. It is supposed to be called from copy procedures defined for extended types. (A record assignment is not recommened: it copies private fields, the prev and next pointers in this case.) ElemBase makes use of the fact that elements are firmly integrated by allowing an element to find out about its current host text (or NIL if there is none).
  94. Procedure ReadElem reads the next element at or after the current reader position; otherwise it has the same semantics as Read. ReadPrevElem reads the next element before the reader position. Procedure WriteElem writes an element into a writer buffer.
  95. Finally, procedure Read has refined semantics in that Read(R, ch) also sets field R.elem. If R.elem # NIL, the reader just passed an element (the one referred to by R.elem). Hence,
  96.     Texts.Read(R, ch);
  97.     IF R.elem # NIL THEN ...handle element...
  98.     ELSE ...handle normal character...
  99.     END;
  100. can be used to operate on a text with embedded elements.
  101. As a consequence of the new text architecture, old Write documents have to be converted to the new format in order to retain the functionality of embedded elements. Plain text documents remain unchanged. A command is provided for this purpose:
  102.     WriteConvert.V2 ~
  103. Miscellaneous Bug Fixes
  104. Several bugs in different modules have been fixed:
  105. - Text is always clipped to the right edge of a frame.
  106. - Math.Exp and Math.Ln now work correctly in all cases.
  107. - Secondary screen page now fully supported in module Display.
  108. - Display1.PatternSize now works correctly for character patterns.
  109. - Single character positioning bug fixed (Fonts/Display).
  110. - Regular expression search now works as expected.
  111. Michael Franz, 7.2.92
  112.